﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Stack
{
    class MyStack
    {
        private List<object> myStack = new List<object>();
                
        public void Push(object input)
        {
            myStack.Add(input);
        }

        public void Clear()
        {
            myStack.Clear();
        }

        public object Pop()
        {
            int i = myStack.Count - 1;
            string errMessage = "Stack is empty!";
            try
            {
                return myStack[i];
            }
            catch (ArgumentOutOfRangeException)
            {
                return errMessage;
            }
            finally
            {
                if (myStack.Count >0)
                {
                    myStack.RemoveAt(i);
                }
            }
        }
        
    }

    class Program
    {
        static void Main(string[] args)
        {
            MyStack stack = new MyStack();
            stack.Push(1);
            stack.Push(2);
            stack.Push("Dope");
            stack.Push(false);
            stack.Push(3.14);
            Console.WriteLine(stack.Pop()); //5
            Console.WriteLine(stack.Pop()); //4
            Console.WriteLine(stack.Pop()); //3
            Console.WriteLine(stack.Pop()); //2
            Console.WriteLine(stack.Pop()); //1
            Console.WriteLine(stack.Pop()); //тут будет ошибка, так как стэк пустой.
            stack.Push(1);
            stack.Push(2);
            stack.Clear();
            Console.WriteLine(stack.Pop()); //тут будет ошибка, так как стэк пустой
        }
    }
}
